package org.jsola.hr.web;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsola.core.Page;
import org.jsola.core.Result;
import org.jsola.hr.dto.CompanyBalanceRecordAddDTO;
import org.jsola.hr.dto.CompanyBalanceRecordUpdateDTO;
import org.jsola.hr.query.CompanyBalanceRecordQuery;
import org.jsola.hr.vo.CompanyBalanceRecordListVO;
import org.jsola.hr.vo.CompanyBalanceRecordVO;

import java.util.List;

/**
 * 用工单位账面余额明细表
 *
 * @author zhr
 */
@Api(tags = "hr-用工单位账面余额明细表")
public interface ICompanyBalanceRecordControllerAPI {

    /**
     * 新增用工单位账面余额明细表
     *
     * @param companyBalanceRecordAddDTO 用工单位账面余额明细表新增实体
     * @return 用工单位账面余额明细表展示对象
     */
    @ApiOperation(value = "新增用工单位账面余额明细表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyBalanceRecordAddDTO", dataType = "CompanyBalanceRecordAddDTO", value = "新增用工单位账面余额明细表", paramType = "body")
    })
    Result<CompanyBalanceRecordVO> save(CompanyBalanceRecordAddDTO companyBalanceRecordAddDTO);


    /**
     * 修改用工单位账面余额明细表
     *
     * @param companyBalanceRecordUpdateDTO 用工单位账面余额明细表
     * @return 更新数量
     */
    @ApiOperation(value = "修改用工单位账面余额明细表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyBalanceRecordUpdateDTO", dataType = "CompanyBalanceRecordUpdateDTO", value = "修改用工单位账面余额明细表", paramType = "body")
    })
    Result<Integer> update(CompanyBalanceRecordUpdateDTO companyBalanceRecordUpdateDTO);


    /**
     * 删除单个用工单位账面余额明细表，彻底删除
     *
     * @param companyBalanceRecordId 用工单位账面余额明细表id
     * @return 删除数量
     */
    @ApiOperation(value = "删除单个用工单位账面余额明细表，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyBalanceRecordId", dataType = "Long", value = "用工单位账面余额明细表id", paramType = "path")
    })
    Result<Integer> delete(Long companyBalanceRecordId);


    /**
     * 批量删除用工单位账面余额明细表，彻底删除
     *
     * @param companyBalanceRecordIds 用工单位账面余额明细表id集合
     * @return 删除数量
     */
    @ApiOperation(value = "批量删除用工单位账面余额明细表，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyBalanceRecordIds", dataType = "Long[]", value = "用工单位账面余额明细表id数组", paramType = "body", allowMultiple = true)
    })
    Result<Integer> deleteBatch(Long[] companyBalanceRecordIds);


    /**
     * 根据用工单位账面余额明细表id查询用工单位账面余额明细表详情
     *
     * @param companyBalanceRecordId 用工单位账面余额明细表id
     * @return 用工单位账面余额明细表详情
     */
    @ApiOperation(value = "根据用工单位账面余额明细表id查询用工单位账面余额明细表详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyBalanceRecordId", dataType = "Long", value = "用工单位账面余额明细表id", paramType = "path")
    })
    Result<CompanyBalanceRecordVO> findById(Long companyBalanceRecordId);


    /**
     * 查询用工单位账面余额明细表
     *
     * @param companyBalanceRecordQuery 用工单位账面余额明细表查询参数
     * @return page
     */
    @ApiOperation(value = "查询用工单位账面余额明细表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyBalanceRecordQuery", dataType = "CompanyBalanceRecordQuery", value = "用工单位账面余额明细表查询参数", paramType = "query")
    })
    Result<List<CompanyBalanceRecordListVO>> listAll(CompanyBalanceRecordQuery companyBalanceRecordQuery);


    /**
     * 分页查询用工单位账面余额明细表
     *
     * @param companyBalanceRecordQuery 用工单位账面余额明细表查询参数
     * @return page
     */
    @ApiOperation(value = "分页查询用工单位账面余额明细表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyBalanceRecordQuery", dataType = "CompanyBalanceRecordQuery", value = "用工单位账面余额明细表查询参数", paramType = "query")
    })
    Result<Page<CompanyBalanceRecordListVO>> page(CompanyBalanceRecordQuery companyBalanceRecordQuery);

    /**
     * 根据用工单位分页查询
     *
     * @param companyBalanceRecordQuery 用工单位账面余额明细表查询参数
     * @return page
//     */
    @ApiOperation(value = "根据用工单位分页查询")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyBalanceRecordQuery", dataType = "CompanyBalanceRecordQuery", value = "用工单位账面余额明细表查询参数", paramType = "body")
    })
    Result<Page<CompanyBalanceRecordListVO>> pageByCompanyId(CompanyBalanceRecordQuery companyBalanceRecordQuery);


}

